#ifndef SURFACE_H
#define SURFACE_H
 
#include <SDL/SDL.h>

/** This class is used to create Surface manipulation static methods.
 * 
 * */

class Surface {
    public:
        Surface();
 
    public:
        /** \brief Loads a BMP file into a surface.
         * 
         * It converts file into a proper display format and no further manipulation us needed.
         * */
        static SDL_Surface* Load(char* Filename);
        
        /**
         * \brief Blits source surface to destination one.
         * 
         * Surf_Src is blitted into Surf_Dest at the dstX, dstY coordinates.
         * */
        static bool Draw(SDL_Surface* Surf_Src, SDL_Surface* Surf_Dest, int dstX, int dstY);
        
        /**
         * \brief Blits part of source surface to destination one.
         * 
         * Takes a rectangular area of Surf_Src at srcX, srcY of srcH height and srcW width and blits into Surf_Dest at dstX, dstY. This is an overloaded method.
         * */
        static bool Draw(SDL_Surface* Surf_Src, int srcX, int srcY, int srcW, int srcH, SDL_Surface* Surf_Dest, int dstX, int dstY);
        
        /**
         * \brief Sets a color to be transparent.
         * The color is set using RGB triplet passed as parameters.
         */
        static bool SetTransparent(SDL_Surface* Surf_Dest, int R, int G, int B);
};
 
#endif